#include <stdio.h>
#include <string.h>

struct student
{
    char name[20];
    //unsigned char age;
    int age;
    //unsigned char sex;
    int sex;//cpu处理int效率最高，int比char要多占内存而已
};

//交换两个字符串
void swap_str(char *a, char *b)
{
    char tmp[20] = { 0 };
    strcpy(tmp, a);
    strcpy(a, b);
    strcpy(b, tmp);
}

//交换两个int整数
void swap_int(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}



int main()
{
    int i, j;//cpu处理int效率最高，int比char要多占内存而已,所以一般都是写成int
    //char i;
    for(i = 0; i < 100; i++)
    {
        ;
    }

    //struct student st[3] = {{"刘德华", 30, 1}, {"安倍晋三", 32, 0}, {"张学友", 32, 1}};//定义一个结构体，有三个成员，每个成员都是struct student
    struct student st[] = {{"刘德华", 35, 1}, {"安倍晋三", 32, 0}};//定义一个结构体，有三个成员，每个成员都是struct student

    for(i = 0; i < 5; i++)
    {
        for(j = 1; j < 5 - j; j++)
        {
            if (st[j].age < st[j - 1].age)
            {
                swap_str(st[j].name, st[j - 1].name);
                swap_int(&st[j].age, &st[j - 1].age);
                swap_int(&st[j].sex, &st[j - 1].sex);
            }
        }
    }



//    for(i = 0; i < 3; i++)
//    {
//        printf("please input name:");
//        scanf("%s", st[i].name);
//        printf("please input age:");
//        //scanf("%c", &st[i].age);
//        getchar();//吃掉回车
//        scanf("%c", &st[i].age);
//        printf("please input sex:");
//        //scanf("%d", &st[i].sex);
//        getchar();//吃掉回车
//        scanf("%d", &st[i].sex);
//    }
//
    for(i = 0; i < (int)sizeof(st) / (int)sizeof(st[0]); i++)
    {
        if(st[i].sex == 1)
            printf("%s, %d, 男\n", st[i].name, st[i].age);
        if(st[i].sex != 1)
            printf("%s, %d, 女\n", st[i].name, st[i].age);
    }

    return 0;
}

